package com.itheima.day24;

import java.util.StringJoiner;
import java.util.TreeMap;
import java.util.function.BiConsumer;

public class TreeMapDemo02 {
    public static void main(String[] args) {

         /* 需求：
        字符串“aababcabcdabcde”
        请统计字符串中每一个字符出现的次数，并按照以下格式输出
        输出结果：
        a（5）b（4）c（3）d（2）e（1）

            新的统计思想：利用map集合进行统计

          如果题目中没有要求对结果进行排序，默认使用HashMap
          如果题目中要求对结果进行排序，请使用TreeMap

          键：表示要统计的内容
          值：表示次数

        */
        String s = "aababcabcdabcde";
        TreeMap<Character, Integer> tm = new TreeMap<>();

        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);//获取单个字符

            if (tm.containsKey(c)) {
                int count = tm.get(c);//获取c键值已经出现的次数
                count++;
                tm.put(c, count);
            } else {
                tm.put(c, 1);

            }


        }


        //遍历集合，要实现字符和数量的拼接需要借助容器
//        StringBuilder sb = new StringBuilder();
//        tm.forEach(new BiConsumer<Character, Integer>() {
//            @Override
//            public void accept(Character key, Integer value) {
//                sb.append(key).append("(").append(value).append(")");
//            }
//        });
//        System.out.println(sb);//a(5)b(4)c(3)d(2)e(1)

        System.out.println("----------------");
        StringJoiner sj = new StringJoiner("","","");
        //获得每一个键值对对象的数据，才能单独进行拼接
        tm.forEach((key, value) -> sj.add(key + "").add("(").add(value + "").add(")"));
        System.out.println(sj);


    }//a(5)b(4)c(3)d(2)e(1)

}


















